package Jihe;

import java.util.HashMap;
import java.util.Map;

public class MapNewMethod {
    public static void main(String[] args) {
        Map<Integer,String> map = new HashMap<>();
        map.put(1,"a");
        map.put(2,"b");
        map.put(3,"c");
        map.put(4,"d");
  //getOrDefault给他一个默认的key，如果存在，则不会返回任何值，如果不存在，则返回自己定义的值
       String value =  map.getOrDefault(5,"null");
        System.out.println(value);
       String val =  map.put(1,"2"); //put方法如果key重复的话，它会返回key对应的老值
        System.out.println(val);
// putIfAbsent 方法，先把key拿出来，看看是不是空的，如果是空的再put值，如果不是空的直接返回
        //防止了 put方法覆盖的问题
        String cal = map.putIfAbsent(3,"4");
        System.out.println(cal); //key为空，则返回null,key不为空，则返回key的老值
        //remove方法(k,v)--> 先把key拿出来，用key对应的值与参数value的值做对比，如果一致
        //则进行删除操作，如果不一致，则返回false。
        //remove方法（k） --> 直接删除key 和 key对应的值
        map.remove(1);
        map.remove(2,"c");
        //replace(k,v)--> 替换 ：将 k对应的值换成v 其实put也可以替换
        map.replace(1,"w");
        //compute方法，计算并处理值
        map.compute(2,(k,v)->v+"w");
        //computeIfAbsent 方法，key为空才处理
        map.computeIfAbsent(2,(v)->"test");
        //拼接
        map.merge(2,"666",(oldv,newv)->oldv.concat(newv));
        map.forEach((k,v)-> System.out.println(k+"   "+v));


    }
}
